package util;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * Arrays工具类:
 *   在java中我们一般把工具类命名为 xxxs
 *   一般来说工具类中提供了大量的静态方法,可以直接通过类名调用
 *  public static <T> List<T> asList(T... a): 接收任意多个参数,底层会把这些参数先封装到数组中,最终将数组中的元素装到一个集合中返回
 *  public static String toString(Object[] a): 将数组中所有的元素拼接成一个字符串返回
 *
 * ArrayList中的方法:
 *    public ArrayList(Collection<? extends E> c):将来利用传进来的集合数据初始化一个新的ArrayList
 *    public <T> T[] toArray(T[] a):将集合转成数组
 *
 */
public class ArraysDemo {
    public static void main(String[] args) {
        //method01();
        //method02();
        ArrayList<String> al = new ArrayList<>();
        al.add("abc");
        al.add("def");
        String[] array = al.toArray(new String[al.size()]);
/*        for (String s : array) {
            System.out.println(s);
        }*/
        System.out.println(Arrays.toString(array));

    }

    private static void method02() {
        //简化集合的初始化+集合可以实现集合的添加删除等操作
        ArrayList<String> al = new ArrayList<>(Arrays.asList("abc", "def", "ghk"));//asList返回一个不可操作的集合
        // 但是我们利用ArrayList可以直接利用传入的集合初始化
        al.add("mn");
        //因此最终相当于把"abc", "def", "ghk"存入到了新的ArrayList集合,不影响这个ArrayList接下来的增删操作
        System.out.println(al);
    }

    private static void method01() {
        ArrayList<String> al = new ArrayList<>();
        al.add("abc");
        al.add("def");
        al.add("ghk");
        System.out.println(al);


        //集合的简便初始化方式
        List<String> list = Arrays.asList("abc", "def", "ghk");//数组转化为集合,用来对集合进行初始化
        //list.add("mn");//asList返回的集合不允许在进行元素增删的操作
        System.out.println(list);
    }
}
